Nfc Info
========
View low level information about NFC tags and their contents.

Shows all information about Near Field Communication (NFC) tags available through Qt Mobility APIs. It parses and shows the contents of NDEF messages and extends the offering of Qt through reusable convenience classes for handling additional record types: Smart Poster, Image and vCard. The app is also showcasing Qt Quick Components and works on Symbian and MeeGo Harmattan. 

When touching an Nfc tag, the application will show general information about the tag and parse the contents of the Ndef message. The contained records are presented on the screen in the form of a list. 

Parsing support is included for URI, Text, Smart Poster, Mime / Image and Mime / vCard records. Any images stored in the message are shown on the screen.

This tool is mainly aimed at developers. While Qt Mobility provides convenience classes for parsing Uri and Text records, this example adds further ready-made classes for working with Smart Poster, Mime / Image and Mime / vCard records. These can easily be reused in any Nfc tag reading project.

The first version of the release supports reading and parsing tags. Support for writing tags will be added in a later release.

Note for Symbian: The project requires Qt 4.7.4, Qt Mobility 1.2 and Qt Quick Components to be present on your device. The binary does not use the Smart Installer (which doesn't deliver Qt Mobility 1.2 yet), so you need to manually install dependencies if needed. On the C7, Symbian Anna (or newer) is required to use this application, as it enables the NFC capabilities of the device. Please read the build & installation instructions for more details.

More information:
https://projects.developer.nokia.com/nfcinfo


IMPORTANT FILES/CLASSES
-------------------------------------------------------------------------------

- nfcinfo.h : encapsulates NFC target detection and NDEF tag reading / writing.
- main.qml : Setup for the UI and the page using Qt Quick Components.
- NfcInfoPage.qml : Handles interaction with the NfcInfo class instance and
glues it to the QML user interface to show the information on the screen.
- ndefnfcsprecord.h : Convenience class for interacting with Nfc Forum 
Smart Poster records.
- ndefnfcmimevcardrecord.h : Convenience class for interacting with Mime / vCard
records. Supports parsing the versit documents stored on a tag to Qt Mobility's
QContact class, as well as converting QContacts to versit documents for writing
them to a tag.
- ndefnfcmimeimagerecord.h : Convenience class for interacting with any image 
mime type record where encoding and decoding support is provided by Qt.
- tagimagecache.h : Caches any images found on tags in memory, for retrieval
and display in the QML user interface.


SECURITY
--------------------------------------------------------------------------------

Symbian: The application can be self-signed.

Harmattan: No special aegis manifest is required.


KNOWN ISSUES
-------------------------------------------------------------------------------

The Tag Image Cache stores all images in memory. Images found in tags
are usually very small, making this no issue at all. For special usage 
scenarios, this class might have to be extended to cache the images
on the disc instead.

Harmattan: In contrast to Symbian, Harmattan PR 1.0 does not provide
simultaneous tag read & write access. Therefore, the example switches
between these two modes within the natural flow of the application usage
and instructs the user accordingly (e.g., to touch the tag again to write
to the tag).
This has been fixed in PR 1.1 - the currently implemented workaround will 
be removed from this app once the PR 1.1 firmware version is available.


BUILD & INSTALLATION INSTRUCTIONS
-------------------------------------------------------------------------------

MeeGo Harmattan
~~~~~~~~~~~~~~~
The example will work out of the box with the Harmattan target 
of the Qt SDK 1.1.3. Make sure you have the latest firmware version
on your Nokia N9. The Nokia N950 doesn't support NFC.


Symbian
~~~~~~~
Compatible devices:
C7-00/Oro/Astound with Symbian Anna/Belle,
Nokia 600, 700 and 701 (plus all upcoming NFC capable devices).

Qt SDK Online update:
Make sure you run the online-update of the Qt SDK so that you get
the latest version of the Qt SDK. 
Without the online update, the Qt Mobility .sis-file contained in 
the Qt SDK 1.1.3 doesn't enable NFC. This is fixed in the online update:
https://bugreports.qt.nokia.com/browse/QTMOBILITY-1835

Device Preparation:
C7-00 with Symbian Anna: additionally install Qt 4.7.4, Qt Mobility 1.2 
and Qt Quick Components from the Qt SDK:
C:\QtSDK\Symbian\sis\Symbian^3\Qt\4.7.4\qt.sisx
C:\QtSDK\Symbian\sis\Symbian^3\Qt\4.7.4\qtwebkit.sisx
C:\QtSDK\Symbian\sis\Symbian^3\QtMobility\1.2.0\qtmobility.sisx
C:\QtSDK\Symbian\sis\Symbian^3\qt-components\qt-components_1_0.sis

Symbian Belle: already includes Qt 4.7.4 and QtM 1.2 - you don't
need to install these. Only Qt Quick Components is required:
C:\QtSDK\Symbian\sis\Symbian^3\qt-components\qt-components_1_0.sis



Build & installation instructions using Qt SDK
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

1. Open nfcinfo.pro
   File > Open File or Project, select nfcinfo.pro.

2. Symbian: Select the 'Qt 4.7.4 for Symbian Belle" target
   (also when compiling for the C7 with Symbian Anna).
   MeeGo Harmattan: Select the MeeGo 1.2 Harmattan (Qt SDK) release target.

3. Press the Run button to build the project and to install it on the device.

Note: if switching between Symbian and MeeGo Harmattan builds, make sure to 
clean the project inbetween. Otherwise, specific differences in the meta-objects
might not get rebuilt.


COMPATIBILITY
-------------------------------------------------------------------------------

- Qt SDK 1.1.3 + online update / Qt Creator 2.3
- QtMobility 1.2
- Qt 4.7.4

Tested on: 
- Nokia C7-00 with Symbian Anna Firmware and QtM 1.2
- Nokia C7-00 and 701 with Symbian Belle Firmware (already includes QtM 1.2)
- Nokia N9 PR 1.0 and PR 1.1

Developed with:
- Qt SDK 1.1.3 + online update / Qt Creator 2.3


CHANGE HISTORY
--------------------------------------------------------------------------------

1.0 First version


RELATED DOCUMENTATION
-------------------------------------------------------------------------------

Project page
https://projects.developer.nokia.com/nfcinfo

Related example projects
https://projects.developer.nokia.com/nfccorkboards
https://projects.developer.nokia.com/nfcchat
https://projects.developer.nokia.com/nfcinteractor

NFC 
http://www.developer.nokia.com/NFC

Qt
http://www.developer.nokia.com/Qt

